iT邦幫忙

2026 iThome 鐵人賽

DAY 2
0
AI Engineering

30 天打造高齡智慧健康照護 AI Companion系列 第 2

Day 02|先讓 AI 聽懂你:從 Speech-to-Text 開始

  • 分享至 

  • xImage
  •  

如果要做一個能自然互動的「高齡智慧健康照護 AI Companion」,第一步就是先讓它能夠「聽懂」使用者在說什麼。

對高齡使用者來說,比起打字,直接透過語音描述日常狀況會更加直覺。像是「昨天沒睡好」、「今天膝蓋有點痛」這些對話,也成為系統了解近期狀態的重要資訊。

所以今天先完成最基本的語音入口:

使用者說話
  ↓
麥克風
  ↓
VAD 判斷人聲開始 / 結束
  ↓
Whisper STT
  ↓
中文文字

這次使用 Apple M5 Pro 搭配 MLX Whisper,在本機完成第一版語音辨識。

STT 是什麼?

STT(Speech-to-Text)就是把語音轉換成文字。

未來 AI Companion 的基本流程會是:

語音 → STT → LLM → TTS → 數位人

而再往後,STT 得到的內容不只會拿來與 LLM 對話,其中與生活、身體狀況相關的資訊,也會進一步交給 Health Memory 處理。

因此 STT 可以說是整套系統最前面的語音入口。

為什麼選 MLX Whisper?

這次主要考慮中文辨識、本機執行,以及後續即時互動的速度,因此使用:

mlx-community/whisper-large-v3-turbo

最基本的辨識方式:

import mlx_whisper

result = mlx_whisper.transcribe(
    "test.wav",
    path_or_hf_repo="mlx-community/whisper-large-v3-turbo",
    language="zh",
    condition_on_previous_text=False,
)

print(result["text"].strip())

language="zh" 指定中文;condition_on_previous_text=False 則讓不同音訊片段盡量獨立辨識。

接著使用 sounddevice 取得麥克風輸入:

stream = sd.InputStream(
    device=device,
    samplerate=sample_rate,
    channels=1,
    dtype="float32",
    callback=audio_callback,
)

這樣就完成:

麥克風 → Whisper → 中文文字

做成接近即時辨識

第一版必須錄完才能開始辨識,所以接著加入 Rolling Transcription,每隔約 2 秒更新一次:

Partial:
哈囉,你好……

Partial:
哈囉,你好!今天我要開始測試我的 AI Companion。

接著再加入 Silero VAD(Voice Activity Detection)

pip install silero-vad

VAD 負責判斷使用者什麼時候開始、停止說話;Whisper 則負責辨識「說了什麼」。

不過這裡遇到一個問題。

Rolling 每 2 秒才更新一次,如果使用者剛好在兩次更新之間說完,最後一小段語音可能還沒有被辨識。

例如:

我今天不太舒服

如果漏掉句尾,可能直接改變整句話的意思。在健康相關的對話中,這類錯誤更需要避免。

所以最後把兩者用途分開:

Rolling STT → 顯示即時字幕

VAD 判斷說完
      ↓
完整辨識一次
      ↓
Final Text

Rolling STT 只負責讓使用者知道「系統正在聽」,真正送進 LLM 的則是 VAD 判斷說完後,重新完整辨識得到的 Final Text。

實測速度

測試環境:

  • Apple M5 Pro
  • Whisper Large V3 Turbo
  • Apple MLX
  • 中文 zh

本次測試結果:

項目 結果
模型預熱 約 0.97 秒
第一個 Partial 約 2.3 秒
4.5 秒音訊辨識 約 1.31 秒
RTF 約 0.29

RTF 計算方式:

RTF = 處理時間 / 音訊長度
    = 1.31 / 4.5
    ≈ 0.29

RTF 小於 1,代表目前模型處理速度比音訊本身還快。

到這裡,AI Companion 已經完成:

直接說話
→ Rolling STT
→ VAD 判斷說完
→ Final Text

目前這些文字先拿來完成語音對話;之後加入 Memory 系統後,其中與睡眠、飲食、活動、用藥或身體狀況相關的內容,也會成為 Health Memory 的資料來源。

現在 AI 已經可以「聽懂」使用者了。

下一步,就要讓它真正開口說話。

Day 03:Text-to-Speech(TTS)。


上一篇
Day 01|從 Chatbot 到 AI Companion:打造一個會記得你的高齡智慧健康陪伴系統
下一篇
Day 03|讓 AI 開口說話:從 Text-to-Speech 開始
系列文
30 天打造高齡智慧健康照護 AI Companion3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言